<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 面向对象 特性： 1.封装  2.继承 3.多态 
        // 构造函数的继承 ---》构造函数类似于类 

        // function Person(name,age){  // Person构造函数 ，Person类 抽象概念
        //     this.name = name;
        //     this.age = age;
        // }
        // 人类  ： 泛指 ，复数  抽象 
        // 对象 ： 特指  单数   具象 

        // var zhangsan = new Person("张三",20);
        // var lisi = new Person("李四",22);

        // 继承 ： 可以拥有 父类 父构造函数 的所有特征 ，在父类基础上扩展功能；


        // 父类 ：父级构造函数
        function Dad(height) {
            this.money = "$10000000000";
            this.house = "一栋别墅";
            this.car = "大牛车一辆";
            this.height = height;
            // this.hobby = function(){
            //     console.log("喜欢篮球");
            // }
        }
        // Dad.prototype.hobby = function(){
        //     console.log("喜欢篮球");
        // }

        // Son类继承 Dad类 
        // ES5 通过改变子类的this 到父类中去 实现 构造函数的继承；
        // 1.call 
        // 2.apply
        // 3 .bind;

        function Son(name,height) {
            // Dad.call(this,height);  // 把子构造函数的this 改到父构造函数里
            Dad.apply(this,[height]);
            // Dad.bind(this)(height);
            this.name = name;
        }

        var zhangsan = new Son("张三","178cm");
        console.log(zhangsan);
        // zhangsan.hobby();




    </script>
</body>

</html>